<?php
//este lo ocupo en el modulo atencion
class OrdenTrabajo
{
    private static $instancia = null;

    private static $id;
    private static $tabla = 'ordenes_trabajo';
    private static $pk; //cuando la tabla tiene solo una pk
    private static $pks; //cuando la tabla tiene muchas pk, como esta :P
    private static $debug;

    private $data = array();

    private function __construct()
    {
        //print_r($this->data);
    }
    //esta clase entrega un array para recorrerlo
    static public function getInstancia($id, $debug = false)
    {

        if (!self::$instancia instanceof self) {
            self::$instancia = new self;
            self::$id = $id;
            self::$tabla = strtolower(self::$tabla);
            self::$debug = $debug;
            self::$instancia->init(self::$id, self::$debug);
        }
        self::$instancia->init($id, self::$debug);
        return self::$instancia;
    }

    private function init($id, $debug)
    {
        if (isset($id, $debug)) {
            $db = Zen::Db($debug); //instanciar la DB
            $ADODB_FETCH_MODE = ADODB_FETCH_ASSOC;
            //self::$pks = $db->MetaPrimaryKeys(self::$tabla);
            //self::$pk = $pks[0];
            //$pks=join(",", $db->MetaPrimaryKeys('examenes_reserva'));
            $sql = "SELECT * FROM " . self::$tabla . " WHERE ot_id='$id'";
            $this->data = $db->GetAll($db->Prepare($sql));
            return true;
        } else {
            return false;
        }

    }
    public function Datos()
    {
        return $this->data[0];

    }
    public function DatosArray()
    {
        return $this->data;

    }
    function TotalExamenes()
    {

    }
    public function Id($indice = 0)
    {
        /* nueva pk */
        /*
        
        $record["res_id"].'___'.$record["ex_codigo"].'___'.$record["exres_fecha"].'___'.$record["exres_hora"]
        
        $record["res_id"].'-'.$record["ex_codigo"].'-'.$record["exres_fecha"].'-'.$record["exres_hora"]
        
        */
        /*
        GENERANDO LA ID PARA UN EXAMEN RESERVADO, EN ESTE ORDEN
        1.- 60 DIGITOS PARA LA ID DE LA RESERVA
        2.- 10 DIGITOS PARA LA ID DEL TIPO DE ATENCION
        3.- 20 DIGITOS PARA LA ID DEL RECURSO
        4.- 8 DIGITOS PARA LA FECHA
        5.- 8 DIGITOS PARA LA HORA
        6.- 30 DIGITOS PARA EL CODIGO DE EXAMEN
        
        */
        return sprintf("%060u", $this->data[$indice]["res_id"]) . sprintf("%010u", $this->
            data[$indice]["tia_id"]) . sprintf("%020u", $this->data[$indice]["rec_id"]) .
            Zen::FechaSoloNumeros($this->data[$indice]["exres_fecha"]) . Zen::
            HoraSoloNumeros($this->data[$indice]["exres_hora"]) . sprintf("%060u", $this->
            data[$indice]["ex_codigo"]);

    }
    public static function DesarmaId($_Ids)
    {
        /*    substr('abcdef', 0, 59);
        //$cont1 = 0;
        foreach ($_Ids as $k => $val)
        {
        $_arrayCampos = array();
        echo 'id '.$val.'<br />';
        $vector=array();
        $vector['res_id'] = (int)substr($val, 0, 58);
        $vector['tia_id'] = (int)substr($val, 59, 68);
        $vector['rec_id'] = (int)substr($val, 69, 88);
        $vector['exres_fecha'] = substr($val, 89, 94);
        $vector['exres_hora']= substr($val, 95, 100);
        $vector['ex_codigo'] = (int)substr($val, 101, 129);
        //$_arrayCampos.=array("res_id" => $id_reserva,"tia_id" => $id_tipo_atencion,"rec_id" => $id_recurso,"exres_fecha" => $fecha,"exres_hora" => $hora,"ex_codigo" => $codigo_examen);
        $_arrayCampos[]= $vector;
        print_r($_arrayCampos);

        //$cont1++;
        }
        return $_arrayCampos;*/


    }

    public function __get($property)
    {

        if (isset($this->data[0][$property])) {

            return Zen::Capitalizar($this->data[0][$property]);

        } else {

            //return false;
            //return '<strong>No existe el atributo ' . $property . '</strong>';
            return null;

        }

    }
/*    public function __set($property, $value)
    {
        //$db = Zen::Db($debug); //instanciar la DB
        $reg = array();
        $reg[$property] = $value;
        $ADODB_FETCH_MODE = ADODB_FETCH_ASSOC;
        $res = Zen::AutoSql(self::$debug, 'examenes_reserva', $reg, 'UPDATE', "res_id='" .
            self::$id . "'", false, false);
        if ($res) {
            self::init(self::$id, self::$debug);
            return true;
        } else {
            return false;
        }
    }
*/

    public function __set($property, $value)
    {
        //$db = Zen::Db($debug); //instanciar la DB
        $reg = array();
        $reg[$property] = $value;
        $ADODB_FETCH_MODE = ADODB_FETCH_ASSOC;
        $res = Zen::AutoSql(self::$debug, 'ordenes_trabajo', $reg, 'UPDATE', "ot_id='" .
            self::$id . "'", false, false);
        if ($res) {
            self::init(self::$id, self::$debug);
            return true;
        } else {
            return false;
        }
    }

    public function __toString()
    {

        return 'No se permite.';

    }
    public function __clone()
    {
        trigger_error("Operación Invalida: No puedes clonar una instancia de " .
            get_class($this) . " class.", E_USER_ERROR);
    }
    public function __wakeup()
    {
        trigger_error("No puedes deserializar una instancia de " . get_class($this) .
            " class.");
    }

}

?>